#pragma once

class App
{
	DECLARE_SINGLETON(App);
	
public:
    App();
    virtual ~App();

    virtual bool Init();
    virtual void Update();
    virtual void Shutdown();
    virtual bool Quit();

    void Run(HINSTANCE hInstance);

	 HINSTANCE _hInstance() { return mhInst; }
    HWND _hWnd() { return mhWnd; }

protected:
    HINSTANCE mhInst;
    HWND mhWnd;

	System * mSystem;
	GLRenderSystem * mRenderSystem;
};